package com.ksyun.alert.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ksyun.alert.biz.bo.timing.TimingExpressionResolveBO;
import com.ksyun.alert.entity.MonitorDatasDO;

import java.util.List;

/**
 * 日常监控数据表接口层
 * @author: hantou
 * @date: 2024-05-05
 */
public interface MonitorDatasService extends IService<MonitorDatasDO> {
    /**
     * 根据时间段获取对应监控指标的监控数据
     * @param metricList 参数列表
     * @param startTimestamp 起始时间戳
     * @param endTimestamp 终止时间戳
     * @return 对应监控指标的监控数据
     */
    List<List<MonitorDatasDO>> getSpecifiedTimePeriodMonitorData(List<String> metricList,Long startTimestamp, Long endTimestamp);

    /**
     * 根据指定时间点前获取最近一组监控数据
     * @param metricList 参数列表
     * @param endTimestamp 终止时间戳
     * @return 指定时间点前最近一组监控数据
     */
    List<MonitorDatasDO> getSpecifiedTimeNewestMonitorData(List<String> metricList, Long endTimestamp);

    /**
     * 根据每个参数的时间段获取对应监控指标的监控数据
     * @param timingExpressionResolveBO 表达式解析业务对象
     * @param nowTimestamp 当前时间戳
     * @return 对应监控指标的监控数据
     */
    List<List<MonitorDatasDO>> getSpecifiedTimePeriodMonitorData(TimingExpressionResolveBO timingExpressionResolveBO, long nowTimestamp);
}
